#include "signal_helper.h"

#include <signal.h>
#include <unistd.h>

namespace edm{
namespace common{


void signal_helper_t::sig_catch(int sig, sig_handler_func_t handle)
{
  struct sigaction sa;
  sa.sa_handler = handle;
  sa.sa_flags = 0;
  sigemptyset(&sa.sa_mask);
  sigaction(sig,&sa,(struct sigaction *) 0);	
}
	
void signal_helper_t::sig_block(int sig)
{
  sigset_t ss;
  sigemptyset(&ss);
  sigaddset(&ss,sig);
  sigprocmask(SIG_BLOCK,&ss,(sigset_t *) 0);	
}

void signal_helper_t::sig_unblock(int sig)
{
  sigset_t ss;
  sigemptyset(&ss);
  sigaddset(&ss,sig);
  sigprocmask(SIG_UNBLOCK,&ss,(sigset_t *) 0);	
}

void signal_helper_t::sig_ignore(int sig)
{
	sig_catch(sig,SIG_IGN);
}

void signal_helper_t::sig_default(int sig)
{
	sig_catch(sig,SIG_DFL);
}

void signal_helper_t::sig_raise(int sig)
{
	kill(getpid(), sig);
}    
    
}}

